package com.lam.common.utils;

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import cn.hutool.core.io.IoUtil;

/**
 * 流工具类
 * @date 2017年3月18日
 * @author lam
 */
public class StreamUtils {
	
	private static final Logger logger = LoggerFactory.getLogger(StreamUtils.class);
	private static final String CHARSET = "utf-8";
	
	private StreamUtils(){
		throw new IllegalStateException("Utility class");
	}
	
	/**
	 * 读取输入流中的字节
	 * @param inputStream
	 * @return
	 * @date 2017年3月18日
	 * @author lam
	 */
	public static byte[] readStreamByte(InputStream inputStream){
		
		return IoUtil.readBytes(inputStream, false);
	}
	
	/**
	 * 读取输入流中的字符
	 * @param inputStream
	 * @return
	 * @date 2017年3月18日
	 * @author lam
	 */
	public static String readStreamString(InputStream inputStream) {
		return readStreamString(inputStream, CHARSET);
	}
	
	/**
	 * 读取输入流中的字符
	 * @param inputStream
	 * @return
	 * @date 2017年3月18日
	 * @author lam
	 */
	public static String readStreamString(InputStream inputStream, String charset) {
		String tempLine = null;
		charset = StringUtils.isBlank(charset) ? CHARSET : charset;
		StringBuilder resultBuffer = new StringBuilder();
		try (BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream, charset))) {
			while (StringUtils.isNotBlank(tempLine = reader.readLine())) {
				resultBuffer.append(tempLine.trim());
			}
			return resultBuffer.toString();
		} catch (Exception e) {
			logger.error("获取流数据失败", e);
			return null;
		}
	}

}
